package org.ala.distributed_transaction_commons;

/**
 * 分布式事务
 *
 * @author 骆毅(ala)
 * @date 2024年2月18日
 */
public interface IDistributedTransaction {
	
	
	/**
	 * 事务id
	 */
	String id();
	/**
	 * 参与者id
	 */
	String participantId();
	/**
	 * 业务类型
	 */
	String biz();
	/**
	 * 角色
	 */
	DistributedTransactionRole role();
	/**
	 * 当前状态
	 */
	DistributedTransactionStatus status();
	/**
	 * 开始时间戳
	 */
	Long startTimestamp();
	/**
	 * 超时时间（单位：秒）
	 */
	Long timeout();

	
	/**
	 * 开启事务
	 */
	void begin();
	
	
	/**
	 * 准备事务
	 */
	void canCommit();
	/**
	 * 与提交事务
	 */
	void preCommit();
	/**
	 * 提交事务
	 */
	void commit();
	
	
	/**
	 * 回滚事务
	 */
	void rollback();
	
	
	/**
	 * 绑定事务补偿
	 */
	void bindCompensation(ICompensation compensation);
	/**
	 * 事务补偿执行器
	 */
	public static interface ICompensation {
		void compensation();
	}
}
